home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1996 January / macformat-033.iso / mac / Shareware City / Developers / VideoToolbox / Changes < prev    next >
Encoding:
Text File  |  1995-11-08  |  28.1 KB  |  216 lines  |  [TEXT/ttxt]

  1. VideoToolbox: Changes
  2. November 8, 1995
  3.  
  4. PUBLISHED ON November 8, 1995, in info-mac's new lib directory:
  5. ftp://mirrors.aol.com/pub/info-mac/dev/lib/video-toolbox-95-11-08-c.hqx
  6.  
  7. CHANGES DURING 9-11/95
  8. •I moved to New York.
  9. •A custom version of the PowerMac 7500/8500 video driver was written for us by Apple Engineer Fernando Urbina, nano@apple.com. It supports several extra resolutions, of which the most noteworthy is 640x480x120 Hz, which works well on the Apple 17" and 20" Multiscan. See "7500/8500 driver.doc". This is in response to a letter sent to Apple in spring '95 by 50 vision scientists. A copy of our letter is in the Notes folder: "cscSetModeTiming.doc". (Don't expect custom versions of other drivers; this is the only driver that Fernando is the expert on. However, he is drafting a specification for what would become a standard driver call to allow us to set a monitor at any time to an arbitrary spatial and temporal resolution, subject only to hardware constraints, which is what we asked for in our letter.)
  10. •All: Made compatible with CodeWarrior 7 (CW7). Bosco Tjan made it compatible with Symantec C 8. Renamed all files whose names ended in ".note" to end in ".doc". Minor change to GDVideo.c for compatibility with Apple's new universal headers (ETO18) distributed with CW7. Added copies of a few projects in CW7 format ".µ". Renamed all projects in CW6 format to end in ".µ6". Corrected spelling of dRAMBased to dRAMBasedMask.
  11. •Assign.c: found and fixed obscure error due to freeing memory not allocated.
  12. •Demo:ScrollDemo discarded, since it was specific to a now-obsolete NuBus video card.
  13. •GDVideo.c: added GDSetDelay and GDGetDelay to support features unique to the PowerMac 7500/8500 video driver, to load the CLUT more quickly. Waiting for VBL is now optional.
  14. •GDVideo.c: GDCardName() checks for the presence of the Slot Manager before using it.
  15. •GDVideo.c: Added GDSwitchMode() which implements cscSwitchMode as documented in Designing PCI Video Cards and Drivers.
  16. •GDVideo.c: added DriverGestalt(), GDGestalt(), and GDGestaltIsOn() to get full version number from video drivers that support this call.
  17. •GetScreenDevice.c: GetDeviceSlot() now returns -1 if there's no Slot Manager. GetDeviceSlotName() returns a C string containing the "slot" name for any screen device, even built-in video, on Macs with NuBus, PCI bus, and no bus. Returns "" if none. Zero is a legal slot for built-in video devices.
  18. •Identify.c: added support for PCI Macs, using Apple's new NameRegistry. Since System 7.5 fails to adequately name most Macs, IdentifyModel uses a built-in table of names. IdentifyModel, IdentifyVideo, and IdentifyMachine now give complete information on all Macs, provided that when running on PCI Macs they are compiled as PPC code. This limitation is a result of the (easy) way that I implemented the NameRegistry calls in Identify.c.
  19. •Notes: added Apple's "Reset displays.doc".
  20. •Notes: added David Brainard's "Raster graphic bibliography.doc".
  21. •SetMouse.c: now compatible with all compilers.
  22. •TimeVideo, as a result of the enhancement of Identify.c, now accesses the Name Registry on PCI Macs to report the computer name, clock rate, presence of L2 cache, and video card name. Fixed a PCI-related bug (no report if you requested testing of multiple resolutions).
  23. •"Video bugs" has been incorporated into "Video synch".
  24.  
  25. CHANGES DURING 8/95
  26. •VideoToolbox.h and GDVideo.c made compatible with Symantec C/C++ 8.0 by Bosco Tjan, tjan@cs.umn.edu.
  27. •Changed nearly all instances of "#if THINK_C" to "#if THINK_C || THINK_CPLUS || SYMANTEC_C" for uniform behavior across the entire line of Symantec C and C++ compilers. The only conditionals still unique to THINK_C are: to include <pascal.h> instead of <Strings.h>, to identify the specific compiler in Identify.c, to use THINK C's csetmode(C_RAW,stdin) in kbhit.c, to use the "asm" directive in SetEntriesQuickly.c, to include MacMemory.h in VideoToolbox.h, and to use the NL kludge when we're compiling for MATLAB.
  28.  
  29. CHANGES DURING 6/95
  30. •All files: added conditionals to eliminate disk accesses for header files that have already been included. Most source files now include only VideoToolbox.h. Some include Traps.h and LowMem.h. These changes noticeably hasten compilation.
  31. •AfterDark.c: AfterDarkEnable() and AfterDarkDisable() allow temporary disabling of the AfterDark screen saver. Written by David Brainard.
  32. •AtExitToShell.c is a new routine, analogous to the ANSI routine atexit(), that attaches your call-back function to the ExitToShell trap (which always occurs) instead of the exit() function, which can be bypassed by abort() or direct escape to shell from a debugger. AtExitToShell() is now called by SndPlay1.c, Timer.c, and VBLInstall.c, so all projects that call those functions will need to add AtExitToShell.c. (AtExitToShell should be used carefully; C services like stdio may not be available at the time the ExitToShell trap is invoked.)
  33. •GDVideo.c and Identify.c: small changes for backward compatibility with version 1 of Apple's universal headers. (Bug reported by Bart Farell.)
  34. •GDVideo.c: GDSaveGamma(NULL) and GDRestoreGamma(NULL) now save and restore ALL devices. After the first request, GDSaveGamma() now ignores subsequent requests to save the same device's gamma table. GDRestoreGamma() no longer discards the saved copy, so multiple calls to GDRestoreGamma() will all be effective. The effect of these changes is that if you have multiple nested pairs of calls to GDSaveGamma and GDRestoreGamma, you will end up with the desired result: every RestoreGamma will restore the screen to the gamma it had at the time of the first call to GDSaveGamma.
  35. •Grating.c: fixed the Grating.eps output file.
  36. •IsFileSharingOn.c checks for running AppleShare server or File Sharing Extension. Returns 1 if either is running, or 0 if neither is running. KillFileSharing() kills the File Sharing Extension process, if running.
  37. •Portable.68k.µ compiles the following files under strict Standard "ANSI" C. These files should work on any computer: VideoToolbox.h, Assign.c, Binomial.c, BreakLines.c, ChiSquare.c, Exponential.c, ffprintf.c, GetTimeDateString.c, HexToBinary.c, IsNan.c, Log2L.c, Mean.c, Nan.c, Normal.c, nrand.c, PrintfExit.c, PupilMTF.c, randU.c, ReadMATLABFile.c, Shuffle.c, Uniform.c, VLambda.c, all of Quick3.
  38. •VideoToolbox.h is now compatible with Symantec C, thanks to Stefan Treue.
  39. •VideoToolbox.h now #includes CodeWarrior's SIOUX.h console header.
  40. •WindowToEPS.c now makes a standard eps file, with file type 'EPSF' a PICT resource providing a preview. These eps files are perfect for importing into Word, PageMaker, etc. 
  41.  
  42. PUBLISHED ON June 14, 1995, in info-mac's new lib directory:
  43. ftp://mirrors.aol.com/pub/info-mac/dev/lib/video-toolbox-95-06-14-c.hqx
  44.  
  45. CHANGES DURING 6/95
  46. •CopyBitsQuickly can now copy images of unequal size and pixelDepth. (I.e. it can expand by an integer multiple; shrinking has not been tested.) It expands MUCH faster than CopyBits does. As always, CopyWindows(...,srcCopy,...) uses CopyBits, and CopyWindows(...,srcCopyLiterally,...) uses CopyBitsQuickly. REQUIRED CHANGE TO YOUR PROJECTS: All projects that use CopyBitsQuickly must now add CenterRectInRect.c and SetPixelsQuickly.c, or the linker will complain that it can't find ExpandAndShiftRect(), ReadPixels(), and WritePixels().
  47. •Identify.c: IdentifyGreenwichMeanTime() and IdentifyVM() provide informative strings about how many hours east or west you are of GMT and the state of virtual memory. IdentifyMachine() now should correctly identify all processors, gives speed in MHz if available, and omits the boring stuff (ROM size, cache status, QuickDraw version).
  48. •KillEveryoneButMe.c: new routine (based on code from C.K.Haun at Apple) quits every other application on your machine, including the Finder. 
  49. •MATLAB: David Brainard and Geoff Boynton made minor changes to VideoToolbox.h and a few source files for compatibility with creation of MEX files for MATLAB.
  50. •Timer.c: added a note alerting users to Apple's handy Microseconds() routine. It's now used in the demo NoiseVBL.c.
  51. •TranslateLinefeeds.c and TranslateLinefeeds.h: no longer exist.
  52. •VideoToolbox.h: now includes <fp.h> or <math.h>, to speed up compiling. (VideoToolbox.h automatically includes the latest available mathematical header file; it prefers fp.h, which is essentially a superset of math.h, but it knows that fp.h is only available in version 2 and later of Apple's universal headers.) Since VideoToolbox.h is normally pre-compiled, including the mathematical header speeds subsequent compiles. REQUIRED CHANGE TO YOUR PROGRAMS: Since <fp.h> and <math.h> are mutually incompatible, you should no longer include math.h in any source file that also includes VideoToolbox.h. REQUIRED CHANGE TO YOUR THINK C PROJECTS: You must now use different versions of the pre-compiled header, depending on whether 8881 support is enabled. Choose VideoToolbox.pre or VideoToolbox.f.pre.
  53. •VideoToolbox.h now includes <assert.h>, or, if MATLAB is true, defines a MATLAB-compatible version of assert(). So don't #include <assert.h> in your source files.
  54. •VideoToolbox.h: defines GENERATING68K, GENERATINGPOWERPC, and GENERATING68881, if not already defined by Apple's latest universal headers. Also defines GENERATING68020. These macros will always be defined, with the value 1 if true and 0 if false, so you can use them in both #if and if() statements.
  55. •mc68881.h: remains, but is now obsolete. Expect it to disappear soon.
  56. •ATMInterface.h: Made sure that the ATM structs are always 68k aligned so they'll conform to what Adobe Type Manager expects.
  57. •CreateTrialSnds.c, GDVideo.c, GrabSlotDrivers.c, GrabVideoDrivers.c: Made sure that the Mac structs are always 68k aligned so they'll conform to what the Mac Toolbox expects.
  58. •ReadMATLABFile.c,VideoToolbox.h: Made sure that MATLAB structs are always native aligned so they'll conform to what MATLAB expects.
  59.  
  60. CHANGES DURING 5/95
  61. •All:  now compatible with CodeWarrior 6.
  62. •All projects: Eliminated use of Nan.c since fp.h now defines NAN for both 68k and ppc machines.
  63. •All: Apple changed the prototype in the header file from SwapMMUMode(char *) to SwapMMUMode(signed char *). For compatibility with both old and new headers, all calls to this function in the VideoToolbox now cast the argument (void *).
  64. •CenterRectInRect.c: added LocalToGlobalRect(), GlobalToLocalRect(), ExpandRect(), ExpandAndShiftRect(), ShrinkRect().
  65. •IdentifyCompiler now can identify CodeWarrior C 6.
  66. •PupilMTF.c: new file returns the contrast gain at any spatial frequency of a pupil of any diameter at any wavelength.
  67. •SndPlay1.c, Timer.c, VBLInstall.c: disabled profiling of interrupt service routines because this might fail on 68k since A5 may not be set up.
  68.  
  69. PUBLISHED ON April 18, 1995
  70.  
  71. CHANGES DURING 3/95
  72. •"Advice" and "Video synch" include much new information contributed by many colleagues.
  73. •cscSetModeTiming.note added to Notes folder. It is a copy of a letter, signed by 55 visual scientists, sent to Apple requesting support for nonstandard video resolutions and frame rates.
  74. •GDVideo.c: Added the DOME MD Max video card to the list of bad video drivers, which crash when asked to read the color lookup table. (The other offenders are the Mac IIci built-in driver and the Relax 19" Model 200.) GDSetEntries returns an error code instead of calling a driver that is known to be bad. This saves TimeVideo, TestGDVideo and your programs from crashing when driving these video cards. Thanks to Greg Jackson for reporting the crashes.
  75. •NoisePdfFill.c: new routine makes binary-, uniform-, and gaussian-noise images quickly.
  76. •TimeVideo 3.7.0 has been enhanced to fully support the yet-to-be released PCI Macs, and more explanation has been added to its "results" file.
  77.  
  78. CHANGES DURING 2/95
  79. •StringBounds.c: Added StrOutlineLength and StringOutlineLength to measure the outline length of a string, in pixels. 
  80. •SetFileInfo.c: Added UpdateFinderNow, from MachTech Magazine.
  81.  
  82. CHANGES DURING 1/95 (after release)
  83. •Updated all the THINK C projects in the demo folder.
  84. •Note: the VideoToolbox applications now come in four possible flavors, indicated by the extension to the file name, e.g. Sandstorm, Sandstorm.68k, Sandstorm.ppc, or Sandstorm.fat. The plain extension indicates a 68k application produced by THINK C; it should run fine on all Macs, by virtue of the 68k-emlator on the PowerPC. The ".68k" extension indicates a 68k application produced by Metrowerks CodeWarrior C; it too should run on all Macs. The ".ppc" extension indicates a PowerPC application produced by Metrowerks CodeWarrior C; it will only run on PowerPC Macs. The ".fat" extension indicates a "fat binary" 68k/PowerPC application produced by Metrowerks CodeWarrior C; it will run native on all Macs. (As you may infer from the file sizes, a fat binary file is essentially the combination of the resources of both native applications, plus a cfg resource that says what's where. Most of the included "ppc" projects have been configured to produced a fat application.)
  85.  
  86. PUBLISHED ON January 14, 1995
  87.  
  88. CHANGES DURING 1/95 (before release)
  89. •Updated everything to CodeWarrior 5. kbhit.c, MaximizeConsoleHeight.c, and several demos take advantage of new THINK-C-like features of the SIOUX console in CodeWarrior 5, and thus are incompatible with prior versions of CodeWarrior.
  90. •Deleted all obsolete projects, i.e. for THINK C 5 & 6, and CodeWarrior 4. Everyone should upgrade to the current version; see the "Advice" document.
  91. •kbhit.c: GetCharUnbuffered(), when compiled by CodeWarrior, hopefully now allows the console to respond to mouse events (dragging, zooming, sizing, etc.) while waiting for character input.
  92. •MaximizeConsoleHeight.c: now works similarly for both THINK and CodeWarrior C.
  93. •TimeVideo now offers to use Apple's new Display Manager, if present, to test multiple resolutions of each screen. 
  94. •"Video attenuator" document now explains, in detail, how to upgrade the ISR Video Attenuator to work with all Macintosh-compatible monitors.
  95.  
  96. CHANGES DURING 12/94
  97. •Display Manager.note added to Notes folder.
  98. •GDVideo.c: added GDGetDisplayMode(), based on cscGetCurMode, documented in Apple's new Display Device Driver Guide Developer Note in the January '94 Developer CD.
  99. •Luminance.c: fixed rare zero-divide error reported by Josh Solomon.
  100. •MoveMouse.c: still untested, but now compiles happily for both 68k and ppc.
  101.  
  102. CHANGES DURING 11/94 (after release)
  103. •CenterRectInRect.c: renamed "RectInRect" to IsRectInRect().
  104. •GDOpenWindow.c: renamed IsWindow to IsGrafPtr. Renamed IsOffScreen to IsGWorldPtr.
  105. •MakeNoise.c replaced by NoiseFill.c.
  106. •NoiseFill.c, replaces MakeNoise.c. NoiseFill fills the rect in the window with a random checkerboard, i.e. black & white checks, each dx pixels wide by dy pixels high. 
  107.  
  108. PUBLISHED ON November 17, 1994
  109.  
  110. CHANGES DURING 11/94 (before release)
  111. •Polished all code to compile without any warnings. (CodeWarrior is fussy.)
  112. •Made everything compatible with THINK C 6 and 7, with Universal and pre-Universal headers. Eliminated use of THINK C's LoMem.h. (Thanks to David Brainard & Josh Solomon for reporting the incompatibilities.)
  113. •Notes:"CopyBits slavishly" explains how to faithfully CopyBits numbers from one pixmap to another. 
  114. •Notes:"newline & return.note" documents the inconsistent ways that MPW, THINK, and CodeWarrior C handle /n and /r.
  115. •CopyWindows.c provides a convenient high-level interface to CopyBits and CopyBitsQuickly, accepting windows (WindowPtr, CWindowPtr, or GWorldPtr) instead of pixmaps or bitmaps. Highly recommended!
  116. •GDOpenWindow has been significantly revised in light of "CopyBits slavishly", though the calling interface is unchanged. Added new routines: GetBitMapPtr(window) returns a pointer to the window's bitmap or pixmap. IsOffScreen(window) returns true only if the window is a GWorldPtr.
  117. •GDOpenWindow.c: applications that use GDOpenWindow.c now have the lasting side effect of changing the device's color table to gray (mode and depth are left unchanged). This is harmless, though slightly annoying. (You can use Control Panel:Monitors to restore Colors.) There are very good reasons for changing the color table to gray, and unfortunately no simple way to undo it when exiting. I'll fix it when I think of a clean solution.
  118. •PixMapToEPS.c saves an image on disk as a PostScript EPSF file.
  119. •Quick3: fixed minor bug in SortAndMergeContrasts reported by Bart Farell. If there were more than 2 identical contrasts, the 3rd (and 5th, etc.) would not be merged. This had no effect on Weibull fits since they effectively treat each trial independently, but it did allow an extra degree of freedom per unmerged contrast to the monotonic fit.
  120. •SndPlay1.c: patch ExitToShell instead of calling _atexit().
  121. •Timer.c: PeekTimerSecs() works, and has no side effects.
  122. •VBLInstall.c: patch ExitToShell instead of calling _atexit().
  123. •WindowToEPS.c: saves the image in a window or GWorld to disk.
  124.  
  125. CHANGES DURING 10/94
  126. •As a gesture toward compatibility with Symantec C++, I've changed most instances of "THINK_C" to "(THINK_C || THINK_CPLUS)". However, I have not tried to compile under C++.
  127. •ChooseScreen.c: new routine that asks the user to select a screen.
  128. •fp.c: new file defines NCEG-compliant routines: ldtox80, x80told, and fpclassify, making them available on 68k as well as PowerPC.
  129. •HideMenuBar.c can now run native on PowerPC.
  130. •ImageStatistics.c, a new file, computes the minimum, maximum, mean, and mean square value of the pixels in a specified rect of a window or GWorld.
  131. •Luminance.h and all files: capitalized "luminanceRecord" to "LuminanceRecord". A typedef retains backward compatibility.
  132. •MoveMouse.c, from Apple, documents their new Cursor Device Manager.
  133. •Sane.c has been discarded; replaced by fp.c, described above. Calls to ExtendedToDouble(), DoubleToExtended(), and ClassOfDouble() must be replaced by calls to similar routines defined in fp.c.
  134. •SndCallBack1.c can now run native on PowerPC.
  135. •TimeCPU.c: no longer times the SANE routine RandomX(), which was uselessly slow and doesn't exist on PowerPC.
  136. •Timer.c: added PeekTimer and PeekTimerSecs, based on code from David Brainard.
  137. •Timer.c: patch ExitToShell instead of calling _atexit().
  138. •"CopyBits slavishly" a new document added to Notes folder, containing answers from Apple Developer Services to my questions.
  139. •VBLInstall.c: Added new "frame" field to VBLTaskAndA5 struct, which counts up from zero.
  140.  
  141. CHANGES DURING 8-9/94
  142. •All files: removed assumption in printf's that OSErr==int and that short==int. All instances of the variable "error" are now declared "int" and may be safely printed with "%d". 
  143. •Assign.c can now read Metrowerks CodeWarrior C style of printed NAN,  e.g. "NAN(021)", in addition to MPW and THINK C styles.
  144. •ATMInterface.c can now run native on PowerPC.
  145. •Luminance.c: If necessary, IncrementLuminance() now bumps up the upper luminance bound to include the incremented luminance.
  146. •RectToAddress.c was extracting the size (omitting flags) from rowBytes by ANDing with 0x1fff, which I've now changed to 0x3fff, as recommended by the Apple Tech Note "RowBytes Revealed".
  147.  
  148. CHANGES DURING 7/94
  149. •All files: updated to support the MetroWerks CodeWarrior C compiler and PowerPC, especially VideoToolbox.h, mc68881.h, Identify.c, Require.c, and ReadMATLABFile.c. Changed "thePort" to qd.thePort. Eliminated all use of the printf pascal-string format "%#s" since it's not supported by CodeWarrior. Nan.c, IsNan.c, and the IsFinite macro in VideoToolbox.h now support 8-byte doubles, which is the standard size on the PowerPC. The entire VideoToolbox now compiles without error under CodeWarrior, but has yet to be tested.
  150. • Assign.c: Added CopyDescribedVars. Fixed bug in ReadAssignmentStream and ReadAssignmentLine that garbled the returned error value. Found and fixed a memory leak in ReadAssignmentLine. 
  151. •ATMInterface.c: initATM does nothing if driver is already open.
  152. •GDVideo.c: added GDNameStr(), which returns a C string, otherwise like GDName(), which returns a pascal string.
  153. •GetTimeDateString.c: now suppresses leading zero in hours, e.g. "5:03 PM, Monday, September 13, 1993"
  154. •MultipleChoice.c: added a new function Choose() that is more convenient that both MultipleChoice() and YesOrNo(), and renamed the file to Choose.c. Fixed cosmetic bug: MultipleChoice() was backspacing one too many times.
  155. •SetEntriesQuickly.c was made compatible with compilers other than THINK C by making all use of the asm directive conditional on THINK_C. This disables all support for ProColor, Quadra, and Mac IIci and IIsi unless the file is compiled by THINK C.
  156. •SetPriority.c now does nothing if compiled as PowerPC code.
  157. •VideoToolbox.h: slightly adjusted the conditional definitions and inclusions relating to c2pstr and CtoPstr to restore compatibility with THINK C 5 and 6.
  158.  
  159. CHANGES DURING 6/94
  160. •Fixed bug that crashed ConvolveX.c, CopyBitsQuickly.c, CopyBitsQuicklyOld.c, PixMapToPostScript.c,  SetEntriesQuickly.c, SetOnePixel.c, and SetPixelsQuickly.c (and thus TimeVideo 2.5.6) when accessing a 32-bit address on a Mac whose ROMs were not 32-bit clean. For example, this made TimeVideo crash when testing a RasterOps 24L in a Mac IIx. It hadn't occurred to me that gestalt32BitCapable would return false on Macs with dirty ROMs even when the SwapMMUMode trap is available and should be called. The appropriate test is TrapAvailable(_SwapMMUMode). (Thanks to Margaret Bradley <BRADLEY@nervm.nerdc.ufl.edu> and Debbie Moore for the crash reports.)
  161. •AddExplicitPalette() now also calls the new VideoToolbox routine MakeColorTableExplicit(). This will tell CopyBits to faithfully copy your pixels as numbers, without color translation, when you copy from your window.  As a result you will now often be able to use CopyBits, with all its power, instead of my dumber substitute called CopyBitsQuickly.
  162. •Assign.c: Fixed bug in ReadAssignmentStream and ReadAssignmentLine that garbled the returned error number. Reduced maximum linelength from 80 to 76, for easier emailing of assignment files (but, alas, I'm still getting 80 character lines). Enhanced error message to reveal any spurious nonprinting characters in offending text.
  163. •CopyBitsQuickly.c: added support for BlockMoveData, but limited testing indicates no speed advantage, even on a Power Mac, so the new code is disabled.
  164. •CopyBitsQuickly.c: added new transfer mode: addOverQuickly adds the source to the destination, four bytes at a time. This gives maximum speed for cases in which you know overflow won't happen. Overflow may carry over into neighboring pixels within the image.
  165. •CopyBitsQuickly.c: Rewrote most of it, replacing all assembly code by portable C of similar speed. (Just in case, the old tried-and-true CopyBitsQuicklyOld.c is supplied as well.)
  166. •GDOpenWindow.c: In response to a query by David Brainard I now document the obscure fact that GDOpenWindow's frame (not content) will overlap onto other screens that are contiguous parts of the desktop.
  167. •Luminance.c: renamed "LtoEOrdered" to "LToEOrdered", fixing erroneous capitalization.
  168. •"demos" folder now has "noFPU" versions of all projects that formerly used the 68881 chip, for compatibility with a wider range of Macs, especially the Power Macs.
  169. •MaximizeConsoleHeight.c's documentation now acknowledges a limitation under 1-bit QuickDraw.
  170. •"Multisync Sense Pins.note" by  Philipp Biermann added to Notes folder.
  171. •PrintfGWorld.c now calls SetGDevice(GetMainDevice()) before calling printf, since attempts to write to the console fail unless the main device is the current device. 
  172. •"Read me" now gives advice on using CopyBits and BlockMoveData.
  173. •TimeVideo.c: This source file was mysteriously corrupted (several bad bytes) in the published version dated June 23, 1994. I restored it from a backup.
  174. •TimeVideo 3.0.1 adds to the SimpleText "TimeVideo results" document a 'styl' resource specifying Monaco font .
  175. •VideoToolbox.h: in the interest of portability, I've standardized on the names "c2pstr and p2cstr" because they're defined in Apple's Strings.h (rather than Symantec's pascal.h) and they're available in MacTraps (rather than MacTraps2), unlike the variously named alternatives: C2PStr, CtoPstr, P2CStr, and PtoCstr. However, for backwards compatibility, VideoToolbox.h guarantees that both c2pstr and CtoPstr and their mates p2cstr and PtoCstr are defined.
  176. •VideoToolbox.h: so that all users might freely use Apple's new BlockMoveData (see "Read Me"), VideoToolbox.h now declares it, if necessary, which provides compatibility with Apple's old pre-Universal header files.
  177. •Zoom.c now accepts a further argument, a pointer to the event record, which previously was accessed as a global variable. This will necessitate changes in all programs that call Zoom().
  178.  
  179. CHANGES DURING 5/94
  180. •Art Wixson says the ISR Video Attenuators are once again in stock. See the "Video Attenuator" document.
  181. •TimeCPU now includes timing for BlockMove() and BlockMoveData().
  182. •Made entire VideoToolbox compatible with Apple's Universal Headers. Renamed "DateString" to "DatedString", and "StringToDate" to "StringToDateAndSecs", to avoid conflict with Apple's Universal Headers. Made minor changes to CalibrateLuminance.c, FlushCacheRange.c, GDTime.c, PlotXY.c, SetMouse.c, SndPlay1.c,  Timer.c, and VBLInstall.c for compatibility with Apple's Universal Headers. (A bit more work may be required before these routines can be compiled to run native on the PowerPC.)  Thanks to Bob Dougherty (wolfgang@cats.ucsc.edu) for reporting the incompatibility.
  183. •To enhance compatibility with PowerPC, eliminated the use of low-memory globals in CopyQuickDrawGlobals.c, Sandstorm.c, and Zoom.c.
  184. •Nan.c defines a pre-computed global double called "Nan" that contains the value 0.0/0.0.
  185.  
  186. CHANGES DURING 4/94:
  187. •Added THINK C 7 projects.
  188. •GetScreenDevice.c: added GetRectDevice().
  189. •SetPixelsQuickly.c: enhanced to not flush its cache when writing to the main screen. In response to query by David Brainard.
  190.  
  191. CHANGES DURING 3/94:
  192. •Added ATMInterface.c and ATMInterface.h from Adobe Systems Inc., allowing direct access to Adobe Type Manager for special effects.
  193. •In Normal.c, added BoundedNormalIntegers(distribution,n,mean,sd,min,max), which fills the "distribution" array with n ordered integers so that random samples from the array, i=distribution[nrand(n)], will be samples from a bounded normal distribution.
  194. •In nrand.c, replaced all three routines (nrand, nrandU, and nrandUL) by one universal routine, nrand(), that returns an unsigned long value and uses integer arithmetic (as in the old nrandU) if n is small enough, and otherwise uses double arithmetic (as in the old nrandUL).
  195. •Added LtoE, EToL, and LtoEOrdered to Luminance.c. LtoE returns the index of the table entry in the specified range with luminance closest to L.
  196. •Changed DateString.c to produce shorter strings by omitting the periods:  "890625015959" instead of "89.06.25.01.59.59".
  197. •Rewrote Shuffle.c to accept an arbitrary elementSize. (All calling programs will need to be changed, to add the new argument.)
  198. •Deleted MyFgets.c from Quick3.
  199. •Added CVNetConvert by Izumi Ozhawa to the Utilities folder.
  200. •Added IdentifyOwner to Identify.c.
  201. •Added MacMemory.h and MacMemory.c which, if included in your project, redefine the Standard C memory management calls (free,malloc,calloc,realloc) to use the Apple Memory Manager, bypassing Symantec THINK C's inefficient memory manager.
  202. •Enhanced Assign.c slightly. PrintAnAssignment now prints enough digits to maintain the precision specified in float.h. This resolves the somewhat spurious errors reported by UnequalDescribedVars when doing read-after-write checks. Fixed PrintQuotedString to correctly handle strings containing the double-quote character. Cosmetic enhancement of how /* comments */ are printed, for nicer word wrap.
  203. •Added RemovePalette(window) to GDOpenWindow.c, which complements the pre-existing AddExplicitPalette(window).
  204.  
  205. CHANGES DURING 2/94:
  206. •Enhanced VBLInstall.c in response to query by Mike Tarr; it now runs forever if frames==-1.
  207. •Enhanced StringBounds.c to also count the black pixels. An argument was added.
  208.  
  209. CHANGES DURING 1/94:
  210. •Enhanced MultipleChoice.c to keep accepting characters until they uniquely specify an answer.
  211. •Added routines to Mean.c to accept arrays of signed or unsigned char, short, or long. All the routines have been optimized for speed.
  212. •Added StringBounds.c, which computes the minimum bounding rectangle for all the pixels that would be set black by calling DrawString with the given pascal string, in the current port, font, size, and style. CharBounds() creates a one-char string and calls StringBounds().
  213. •Added PrintfGWorld.c, for debugging, which uses "printf" to print out the GWorld as a gross bitmap.
  214.  
  215. All earlier changes appear in the file VideoToolbox:"Changes 1990-3".
  216.